梦入琼楼寒有月,行过石树冻无烟

PHP 时间与日期

在PHP开发语言之众,PHP为用户提供了大量的日期和时间的相关函数,利用这些函数可以方便的获得当前的日期和时间,也可以生成一个指定的时间戳等方式输出。

时间戳是什么

时间戳即UNIX时间戳,在大多数UNIX系统中,保存当前的前日期和时间的方法是格林尼治时间[^格林尼治标准时间],而格林尼治时间是从1970年1月1日零点起到当前此刻的秒数,以32为整列表示。1970年1月1日零时起也即称之为UNIX纪元,在Windows系统中也可以使用UNIX时间戳,如果时间是在1970年以前或2039年以后,处理的事件将会发生错误。

时间转换为时间戳

strtotime()

如果用字符串表达的日期和事件转化为时间戳形式,即可使用**strtotime()**函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
echo strtotime('2020-10-27'),"<br>";
echo strtotime('2020-10-27 9:16:51'),"<br>";
echo strtotime('October 27, 2020');
?>
</body>
</html>
mktime()
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
$time = mktime(9,26,55,10,27,2020); // 9时25分55秒,2020年10月27日
print_r($time);
?>
</body>
</html>

获取当前时间

在PHP开发语言之中,最常用的则是日期和时间函数即date()函数,可该函数的作用是我将时间戳按照只当的字符来显示具体的时间信息:

time()

time函数和data()函数有一定的区别,time()函数主要的作用就是和将时间戳转化为具体的日期和时间字符串如:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
echo time(); // 输出当前时间戳
?>
</body>
</html>
date()
date()函数表
ID DA FA
d 当前月份的第几天 月份
j 月份中的第几天(没有前导零)
S 每月天数后面的英文后缀,两个字符标识[^如:st、nd、rd、th]
F 月份[^完整的文本格式(January)]
m 数字表示月份[^01~012]
M 三个字母缩写表示月份[^Jan]
n 数字表示月份,没有前导0[^1~12]
t 给定月份所应有的天数[^28~31]
D 星期中的第几天(用字母标识) 星期
l [^小写L] 星期几
w 星期中的第几天,数字显示[^0=星期天,6星期六]
z 年份中的第几天 年份
L 是否时闰年[^如果是闰年为1,则返回为0]
Y 数为数字表示完整年份[^如2020、2021]
y 二位数年份表示[^20]
a 小写的上午和下午值[^am、pm] 上午and下午
A 大写的上午和下午值[^AM、PM]
g 小时,12小时格式没有先导0[^1~12] 小时
G 小时,24小时格式,没有前导零[^0~24]
h 小时,12小时格式,有前导零[^01~12]
H 小时,24小时格式,有前导零[^00~23]
i 有前导零的分钟数[^00~59] 分钟
s 秒数,有前导零[^00~59]
U 从UNIX纪元至今的秒数[^即time秒数]
date() 输出当前时间
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
echo date('Y 年 n 月 j 日 g 时 i 分 s 秒 A');
?>
</body>
</html>
date() 设置时区

data()系统默认的时格林尼治标准时间,所以显示的时间也许会和当前的时间有一定的差别,可通过date_default_timezone_set函数进行设置时区。Asia/Chongqing(重庆时间)Asia/Shanghai (上海时间),Aisa/Urumqi(乌鲁木齐),其北京时间可直接使用“PRC”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>demo</title>
</head>
<body>
<?php
date_default_timezone_set('PRC');
echo "北京时间","<br>";
echo date('Y 年 n 月 j 日 g 时 i 分 s 秒 A');
?>
</body>
</html>
ID DA FA
strtotime() 字符串表达的日期和事件转化为时间戳 时间转换为时间戳
mktime() 字符串表达的日期和事件转化为时间戳
time() 时间戳转化为具体的日期和时间字符串 获取当前时间
date() 输出当前时间
设置时区
Asia/Chongqing 重庆时间 date_default_timezone_set
Asia/Shanghai 上海时间
Aisa/Urumqi 乌鲁木齐
PRC 北京时间
⬅️ Go back